if(a>b>c)为什么错误?

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:13:46
C语言问题~
就是不知道那样表达为什么错啦~

a>b>c在c语言里头被认为是一个表达式

根据C编译系统的不同(从左自右结合运算或从右自左结合运算),这个表达式会被认为是(a>b)>c或者a>(b>c)

a>b是一个表达式,如果a大于b,那么这个式子的值就是TRUE,否则就是FALSE
而基本约定俗成的,我们都会#define TRUE 1,就是说TRUE为1,FALSE为0

假设a=3,b=2,c=1,C编译系统按照从左自右结合运算,那么就是(a>b)>c,由于a比b大,因此a>b这个表达式的值为真,也就是值为1,,然后 表达式a>b的值再与c比较,两边都是1,是相等的,大于号不成立,因此(a>b)>c的结果是FALSE

如果你的本意是想让程序“当a>b且b>c”时执行if语句块里的语句时,你如果用a>b>c,那么if语句块里的语句就有可能根本不会被执行(当然,在我上面假设的这种情况下,如果a=2,b=1,c=0,if语句块中的语句还是会被执行的,你可以自己思考一下)。

因此,为了保证程序的正确性,我们必须这么写:if(a>b && b>c)

如果还有不清楚的地方,可以给我发消息,最近正好要写一本C语言的教材,你提的问题也可以让我们知道在教材中应该在哪些方面要加强

你当数学啊~~

if (b>c && a>b)

空格